package main

import (
	"fmt"
	"time"
)

func main() {
	/*
	go语言提供了一个select功能，作用于channel之上的，多路复用
	select会随即公平的选择一个case语句执行
	应用场景：1.timeout超时机制
	 */
	timeout:=make(chan bool,1)
	timeout2:=make(chan bool,1)
	go func() {
		//若超过1s，则报告主协程
		time.Sleep(time.Second*5)
		timeout<-true
	}()
	go func() {
		//若超过1s，则报告主协程
		time.Sleep(time.Second*1)
		timeout2<-true
	}()
	select {
		case <-timeout:
			fmt.Println("1超时了")
		case <-timeout2:
			fmt.Println("2超时了")
		default:
			fmt.Println("继续下一次")
	}
	//for {
	//	if timeout{
	//		fmt.Println("结束")
	//		break
	//	}
	//	time.Sleep(time.Millisecond*10)
	//}


	//ch1:=make(chan int,1)
	//ch2:=make(chan int,1)
	//ch1<-1
	//ch2<-2
	//select {
	//case data:=<-ch1:
	//	fmt.Println(data)
	//case data:=<-ch2:
	//	fmt.Println(data)
	//}
}
